`timescale 1ns / 1ps

module tb_fsm_flowing_LED;

    // 参数
    parameter CLK_PERIOD = 10; // 时钟周期为 10 个时间单位

    // 信号
    reg clk;
    reg resetn;
    wire LED1, LED2, LED3;

    // 实例化被测试模块
    fsm_flowing_LED dut (
        .clk(clk),
        .resetn(resetn),
        .LED1(LED1),
        .LED2(LED2),
        .LED3(LED3)
    );

    // 时钟生成
    always #((CLK_PERIOD / 2)) clk = ~clk;

    // 初始化
    initial begin
        clk = 0;
        resetn = 0;
        #100; // 等待一段时间
        resetn = 1;
        #1000; // 模拟一段时间
    end

    // 显示 LED 输出状态
    always @(posedge clk) begin
        $display("LED1=%b, LED2=%b, LED3=%b", LED1, LED2, LED3);
    end

endmodule
